The present invention relates to electronic data carrier file systems. In particular, the present invention relates to file systems for small hand held data carriers, particularly for SmartCards.
A new area of technology with increasing importance is represented by the increasing use and acceptance of SmartCards and their applications for many different purposes.
Such applications need the ability to store data on media so that they can be retrieved at a later point in time. Under normal circumstances they use the file interface provided by the operating system on which the application is running. The operating system makes use of file systems to store the data on hardware and to keep the data consistent. Since SmartCards are not natively supported by any operating system this mechanism cannot be used for SmartCard enabled applications. SmartCards, have a static file system implemented into their functionality, i.e. the data stored on a smart card has to be described at the time the card is issued. Dynamic file allocation is therefore either not possible or very hard to accomplish.
Furthermore, dynamic file sizes are not supported by the ISO 7816 SmartCard file system.
Creating a new data file for each data object to store will be an ineffective way to store the data, because the file system overhead will reduce card free space and performance. Storing multiple data objects in one elementary file on the card will reduce the overhead of file headers, but a problem of ineffective accessing of the data objects still exists. Reserving fixed length records will waste file system space on the card.
Changing of file size can only be implemented by re-initializing the cards, which is only possible as long as they are not finalized, (i.e. closed before distribution to the end-users). Issuing open (i.e. not finalized) cards is not acceptable due to security reasons. In addition, files cannot be addressed by logical file names, but must rather be addressed by their file identifiers. This requires more effort and is not helpful for rapid prototyping efforts.
Further, the implementation of a dynamic file system onto a SmartCard imposes new problems since existing file systems generally depend on things like pre-allocated directories, cluster models, allocation bitmaps, etc. Since memory is always constrained on SmartCards and special problems like unexpected card-removal, fragmentation of files, and card diversity are always present, a new file system for the SmartCard needs to be developed.
Therefore, the primary object of the present invention is to provide a more flexible, improved file system.
It is another object of the present invention to provide such system which is compliant to the ISO 7816 SmartCard file system standard.
It is another object of the present invention to provide such file system with maximum utilization of the free card memory space.
A further object is to improve data security and consistency of such cards.
The foregoing and other objects are realized by the Extended SmartCard file system which resides in one flat file within the ISO file system of the SmartCard.
A second file, containing user information like size of the file system, owner information, and key fields, is used to configure the file system driver dynamically. However, this file may be omitted if the file system driver is statically initialized.
The nested file system of the present invention has the advantage, in relation to the method sketched out in the discussion of prior art technique that files can be fully dynamically accessed and edited without affecting the underlying ISO file layout, i.e. the outer fixed structure of the outer file system.
In a preferred embodiment of the inventive data managing method, data integrity and consistency are achieved by a transaction-oriented commit concept.
Additionally, all security mechanisms of the underlying SmartCards, in terms of data protection, are fully maintained. Moreover the security mechanisms are enhanced in cases of power loss or unexpected card removal since two distinct directories are provided for data management.
Further, the data storage supports human readable file names and fragmented file allocation, such that data can be stored in chunks, and the file system incorporates a defragmenting function.
Further, data compress and decompress operations are supported.